home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / rexx / uninstall.lha / UnInstall next >
Text File  |  1994-11-07  |  40KB  |  837 lines

  1. /******************************************** REXX **********************************/
  2. /*                                                                                  */
  3. /* Programm:         UnInstall                                                      */
  4. /*                                                                                  */
  5. /* Autor:            Manfred Bauer, St.-Augustinus-Str. 74, 81825 München           */
  6. /*                                                                                  */
  7. /* Version:          1.0                                                            */
  8. /*                                                                                  */
  9. /* Kurzbeschreibung: Das REXX dient dazu, um bereits installierte Software wieder   */
  10. /*                   zu deinstallieren. Hierzu werden Sie nach dem Objekt und ectl. */
  11. /*                   dazugehörigen Dateien aus den Sstemverzeichnissen gefragt.     */
  12. /*                   Nachdem diese gesichert wurden, wird ein Installationsskript   */
  13. /*                   auf der ersten Diskette abgelegt, um diese Teile mit dem       */
  14. /*                   Commodore-Installer wieder installieren zu können.             */
  15. /*                                                                                  */
  16. /* letzte Änderung:  __.__.____  Grund:                                             */
  17. /*                                                                                  */
  18. /************************************************************************************/
  19.  
  20. /************************************************************************************/
  21. /* Variablen, die angepaßt werden müssen                                            */
  22. /************************************************************************************/
  23. docpfad = "AMIGA_I:Docs/"                    /* beinhaltet den vollständigen Pfad,  */
  24.                                              /* in dem Ihre Dokumentationen abge-   */
  25.                                              /* legt sind                           */
  26. installerpfad = "AMIGA:Utilities/"           /* Pfad, wo C=-Installer ist           */
  27. Editor = "EdgePrg:Edge"                      /* Editor-Aufruf                       */
  28. Name = "Manfred Bauer"
  29. /************************************************************************************/
  30. /* sonstige Variablen                                                               */
  31. /************************************************************************************/
  32. NL = "0a"x                                   /* Zeilenvorschub für Requester        */
  33. Orginal = " "                                /* beinhaltet zu archivierendes Orginal*/
  34. OrgTyp = " "
  35. OrgPfad = " "
  36. SWahl.1 = " "                                /* ausgewählte Objekte aus S:          */
  37. SWahl.2 = " "
  38. SWahl.3 = " "
  39. SWahl.4 = " "
  40. SWahl.5 = " "
  41. SWahl.count = 0                              /* Zähler S:-Objekte                   */
  42. LIBSWahl.1 = " "                             /* ausgewählte Objekte aus LIBS:       */
  43. LIBSWahl.2 = " "
  44. LIBSWahl.3 = " "
  45. LIBSWahl.4 = " "
  46. LIBSWahl.5 = " "
  47. LIBSWahl.count = 0                           /* Zähler LIBS:-Objekte                */
  48. PrefsWahl.1 = " "                            /* ausgewählte Objekte aus Prefs:      */
  49. PrefsWahl.2 = " "
  50. PrefsWahl.3 = " "
  51. PrefsWahl.4 = " "
  52. PrefsWahl.5 = " "
  53. PrefsWahl.count = 0                          /* Zähler Prefs:-Objekte               */
  54. FontsWahl.1 = " "                            /* ausgewählte Objekte aus Fonts:      */
  55. FontsWahl.2 = " "
  56. FontsWahl.3 = " "
  57. FontsWahl.4 = " "
  58. FontsWahl.5 = " "
  59. FontsWahl.count = 0                          /* Zähler Fonts:-Objekte               */
  60. ENVWahl.1 = " "                              /* ausgewählte Objekte aus ENV:        */
  61. ENVWahl.2 = " "
  62. ENVWahl.3 = " "
  63. ENVWahl.4 = " "
  64. ENVWahl.5 = " "
  65. ENVWahl.count = 0                            /* Zähler ENV:-Objekte                 */
  66. LocaleWahl.1 = " "                           /* ausgewählte Objekte aus Locale:     */
  67. LocaleWahl.2 = " "
  68. LocaleWahl.3 = " "
  69. LocaleWahl.4 = " "
  70. LocaleWahl.5 = " "
  71. LocaleWahl.count = 0                         /* Zähler Locale:-Objekte              */
  72. DocsWahl.1 = " "                             /* ausgewählte Objekte aus Docs:       */
  73. DocsWahl.2 = " "
  74. DocsWahl.3 = " "
  75. DocsWahl.4 = " "
  76. DocsWahl.5 = " "
  77. DocsWahl.count = 0                           /* Zähler Docs:-Objekte                */
  78. WBStartWahl.1 = " "                          /* ausgewählte Objekte aus WBStart:    */
  79. WBStartWahl.2 = " "
  80. WBStartWahl.3 = " "
  81. WBStartWahl.4 = " "
  82. WBStartWahl.5 = " "
  83. WBStartWahl.count = 0                        /* Zähler WBStart:-Objekte             */
  84. GesBlocks = 0                                /* Größe des Backups in Blocks         */
  85. disks = 0                                    /* Anzahl der benötigten Disketten     */
  86. /************************************************************************************/
  87. /* Steuerung                                                                        */
  88. /************************************************************************************/
  89.  
  90. call LadeLibs                                /* REXX-Libraries laden                */
  91. call WahlObjekt                              /* Auswahl des zu archivierenden Obj.  */
  92. call WahlS                                   /* dazugehörige Objekte wählem         */
  93. call WahlLIBS
  94. call WahlPrefs
  95. call WahlFonts
  96. call WahlENV
  97. call WahlLocale
  98. call WahlDocs
  99. call WahlWBStart
  100. call DateienSuchen                           /* Alle ausgewählten Dateien zusammen- */
  101.                                              /* suchen                              */
  102. call GroesseErm                              /* Größe des Backups ermitteln         */
  103. GesBytes = GesBlocks*512
  104. call Kopieren                                /* Kopieren der Dateien                */
  105. call ErzInstallScript                        /* Install-Script erzeugen             */
  106.  
  107. EXIT(0)
  108.  
  109. /************************************************************************************/
  110. /* Allokierung aller benötigten REXX-Libraries                                      */
  111. /************************************************************************************/
  112. LadeLibs : PROCEDURE
  113.   rc = 0
  114.   rc = rc + addlib("rexxreqtools.library",-10,-30,0)
  115.   rc = rc + addlib("rexxsupport.library",-20,-30,)
  116.   if rc ~= 2 then do
  117.     say "Benötigte Libraries konnten nicht eröffnet werden"
  118.     say "*** Abbruch ***"
  119.     exit
  120.   end
  121. RETURN
  122.  
  123. /************************************************************************************/
  124. /* Auswahl des zu archivierenden Objekts                                            */
  125. /************************************************************************************/
  126. WahlObjekt : PROCEDURE EXPOSE Orginal OrgTyp Orgpfad NL OrgWo
  127.   rtezrequest("Bitte wählen Sie das Modul/Verzeichnis aus," || NL ||,
  128.               "das Sie archivieren wollen" || NL || NL ||,
  129.               "Achtung: Nur ein Objekt auswählen")
  130.   rtfilerequest(,,"Objekt wählen","BackUp",,
  131.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  132.                 "rt_reqpos = reqpos_centerscr",,
  133.                 orgwahl)
  134.   call farbe                                 /* Bei mir verstellen sich immer die   */
  135.                                              /* Farben der Workbench, hier werden   */
  136.                                              /* sie wieder korrigiert               */
  137.   Orginal = orgwahl.1
  138.   if Orginal = "ORGWAHL.1" then do
  139.     rtezrequest("Es wurde kein Objekt ausgewählt!" || NL ||,
  140.                 "Sicherung wird abgebrochen")
  141.     exit
  142.   end
  143.   erg = statef(Orginal)
  144.   parse var erg OrgTyp x
  145.   if OrgTyp = "DIR" then do
  146.     pos = lastpos("/",Orginal)
  147.     if pos = 0 then
  148.       pos = lastpos(":",Orginal)
  149.     OrgPfad = substr(Orginal,pos+1)
  150.     OrgWo = substr(Orginal,1,pos)
  151.   end  
  152. RETURN
  153.  
  154. /************************************************************************************/
  155. /* Korrektur der Workbench-Farben                                                   */
  156. /************************************************************************************/
  157. farbe : PROCEDURE
  158.   address command "sys:prefs/palette use"
  159. RETURN
  160.  
  161. /************************************************************************************/
  162. /* Auswahl der zugehörigen Objekte aus dem S-Verzeichnis                            */
  163. /************************************************************************************/
  164. WahlS : PROCEDURE EXPOSE NL SWahl.1 SWahl.2 SWahl.3 SWahl.4 SWahl.5 SWahl.count
  165.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  166.               "aus dem S:-Verzeichnis aus" || NL || NL ||,
  167.               "Achtung: Nicht mehr als 5 Objekte" || NL ||,
  168.               "         Nicht die Datei USER-STARTUP," || NL ||,
  169.               "         diese wird später bearbeitet")
  170.   rtfilerequest("SYS:S",,"Objekte in S: wählen","BackUp",,
  171.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  172.                 "rt_reqpos = reqpos_centerscr",,
  173.                 SWahl)
  174.   call farbe                                 /* Bei mir verstellen sich immer die   */
  175.                                              /* Farben der Workbench, hier werden   */
  176.                                              /* sie wieder korrigiert               */
  177.   if SWahl.count > 5 then
  178.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  179.                 "Nur die ersten 5 werden gesichert")
  180. RETURN
  181.  
  182. /************************************************************************************/
  183. /* Auswahl der zugehörigen Objekte aus dem LIBS-Verzeichnis                         */
  184. /************************************************************************************/
  185. WahlLIBS : PROCEDURE EXPOSE NL LIBSWahl.1 LIBSWahl.2 LIBSWahl.3 LIBSWahl.4 LIBSWahl.5 LIBSWahl.count
  186.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  187.               "aus dem LIBS:-Verzeichnis aus" || NL || NL ||,
  188.               "Achtung: Nicht mehr als 5 Objekte")
  189.   rtfilerequest("SYS:LIBS",,"Objekte in LIBS: wählen","BackUp",,
  190.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  191.                 "rt_reqpos = reqpos_centerscr",,
  192.                 LIBSWahl)
  193.   call farbe                                 /* Bei mir verstellen sich immer die   */
  194.                                              /* Farben der Workbench, hier werden   */
  195.                                              /* sie wieder korrigiert               */
  196.   if LIBSWahl.count > 5 then
  197.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  198.                 "Nur die ersten 5 werden gesichert")
  199. RETURN
  200.  
  201. /************************************************************************************/
  202. /* Auswahl der zugehörigen Objekte aus dem Prefs-Verzeichnis                        */
  203. /************************************************************************************/
  204. WahlPrefs : PROCEDURE EXPOSE NL PrefsWahl.1 PrefsWahl.2 PrefsWahl.3 PrefsWahl.4 PrefsWahl.5 PrefsWahl.count
  205.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  206.               "aus dem Prefs:-Verzeichnis aus" || NL || NL ||,
  207.               "Achtung: Nicht mehr als 5 Objekte")
  208.   rtfilerequest("SYS:Prefs",,"Objekte in Prefs: wählen","BackUp",,
  209.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  210.                 "rt_reqpos = reqpos_centerscr",,
  211.                 PrefsWahl)
  212.   call farbe                                 /* Bei mir verstellen sich immer die   */
  213.                                              /* Farben der Workbench, hier werden   */
  214.                                              /* sie wieder korrigiert               */
  215.   if PrefsWahl.count > 5 then
  216.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  217.                 "Nur die ersten 5 werden gesichert")
  218. RETURN
  219.  
  220. /************************************************************************************/
  221. /* Auswahl der zugehörigen Objekte aus dem Fonts-Verzeichnis                        */
  222. /************************************************************************************/
  223. WahlFonts : PROCEDURE EXPOSE NL FontsWahl.1 FontsWahl.2 FontsWahl.3 FontsWahl.4 FontsWahl.5 FontsWahl.count
  224.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  225.               "aus dem Fonts:-Verzeichnis aus" || NL || NL ||,
  226.               "Achtung: Nicht mehr als 5 Objekte")
  227.   rtfilerequest("SYS:Fonts",,"Objekte in Fonts: wählen","BackUp",,
  228.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  229.                 "rt_reqpos = reqpos_centerscr",,
  230.                 FontsWahl)
  231.   call farbe                                 /* Bei mir verstellen sich immer die   */
  232.                                              /* Farben der Workbench, hier werden   */
  233.                                              /* sie wieder korrigiert               */
  234.   if FontsWahl.count > 5 then
  235.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  236.                 "Nur die ersten 5 werden gesichert")
  237. RETURN
  238.  
  239. /************************************************************************************/
  240. /* Auswahl der zugehörigen Objekte aus dem ENV-Verzeichnis                          */
  241. /************************************************************************************/
  242. WahlENV : PROCEDURE EXPOSE NL ENVWahl.1 ENVWahl.2 ENVWahl.3 ENVWahl.4 ENVWahl.5 ENVWahl.count
  243.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  244.               "aus dem ENV:-Verzeichnis aus" || NL || NL ||,
  245.               "Achtung: Nicht mehr als 5 Objekte")
  246.   rtfilerequest("SYS:Prefs/ENV-Archive",,"Objekte in ENV: wählen","BackUp",,
  247.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  248.                 "rt_reqpos = reqpos_centerscr",,
  249.                 ENVWahl)
  250.   call farbe                                 /* Bei mir verstellen sich immer die   */
  251.                                              /* Farben der Workbench, hier werden   */
  252.                                              /* sie wieder korrigiert               */
  253.   if ENVWahl.count > 5 then
  254.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  255.                 "Nur die ersten 5 werden gesichert")
  256. RETURN
  257.  
  258. /************************************************************************************/
  259. /* Auswahl der zugehörigen Objekte aus dem Locale-Verzeichnis                       */
  260. /************************************************************************************/
  261. WahlLocale : PROCEDURE EXPOSE NL LocaleWahl.1 LocaleWahl.2 LocaleWahl.3 LocaleWahl.4 LocaleWahl.5 LocaleWahl.count
  262.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  263.               "aus dem Locale:-Verzeichnis aus" || NL || NL ||,
  264.               "Achtung: Nicht mehr als 5 Objekte")
  265.   rtfilerequest("SYS:Locale",,"Objekte in Locale: wählen","BackUp",,
  266.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  267.                 "rt_reqpos = reqpos_centerscr",,
  268.                 LocaleWahl)
  269.   call farbe                                 /* Bei mir verstellen sich immer die   */
  270.                                              /* Farben der Workbench, hier werden   */
  271.                                              /* sie wieder korrigiert               */
  272.   if LocaleWahl.count > 5 then
  273.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  274.                 "Nur die ersten 5 werden gesichert")
  275. RETURN
  276.  
  277. /************************************************************************************/
  278. /* Auswahl der zugehörigen Objekte aus dem Docs-Verzeichnis                         */
  279. /************************************************************************************/
  280. WahlDocs : PROCEDURE EXPOSE NL docpfad DocsWahl.1 DocsWahl.2 DocsWahl.3 DocsWahl.4 DocsWahl.5 DocsWahl.count
  281.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  282.               "aus dem Docs:-Verzeichnis aus" || NL || NL ||,
  283.               "Achtung: Nicht mehr als 5 Objekte")
  284.   rtfilerequest(docpfad,,"Objekte in Docs: wählen","BackUp",,
  285.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  286.                 "rt_reqpos = reqpos_centerscr",,
  287.                 DocsWahl)
  288.   call farbe                                 /* Bei mir verstellen sich immer die   */
  289.                                              /* Farben der Workbench, hier werden   */
  290.                                              /* sie wieder korrigiert               */
  291.   if DocsWahl.count > 5 then
  292.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  293.                 "Nur die ersten 5 werden gesichert")
  294. RETURN
  295.  
  296. /************************************************************************************/
  297. /* Auswahl der zugehörigen Objekte aus dem WBStart-Verzeichnis                      */
  298. /************************************************************************************/
  299. WahlWBStart : PROCEDURE EXPOSE NL WBStartWahl.1 WBStartWahl.2 WBStartWahl.3 WBStartWahl.4 WBStartWahl.5 WBStartWahl.count
  300.   rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||,
  301.               "aus dem WBStart:-Verzeichnis aus" || NL || NL ||,
  302.               "Achtung: Nicht mehr als 5 Objekte")
  303.   rtfilerequest("SYS:WBStartUp",,"Objekte in WBStart: wählen","BackUp",,
  304.                 "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||,
  305.                 "rt_reqpos = reqpos_centerscr",,
  306.                 WBStartWahl)
  307.   call farbe                                 /* Bei mir verstellen sich immer die   */
  308.                                              /* Farben der Workbench, hier werden   */
  309.                                              /* sie wieder korrigiert               */
  310.   if WBStartWahl.count > 5 then
  311.     rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||,
  312.                 "Nur die ersten 5 werden gesichert")
  313. RETURN
  314.  
  315. /************************************************************************************/
  316. /* Auswahl der zugehörigen Objekte aus dem WBStart-Verzeichnis                      */
  317. /************************************************************************************/
  318. DateienSuchen : PROCEDURE EXPOSE NL Orginal,
  319.                                  SWahl.count SWahl.1 SWahl.2 SWahl.3 SWahl.4 SWahl.5,
  320.                                  LIBSWahl.count LIBSWahl.1 LIBSWahl.2 LIBSWahl.3 LIBSWahl.4 LIBSWahl.5,
  321.                                  PrefsWahl.count PrefsWahl.1 PrefsWahl.2 PrefsWahl.3 PrefsWahl.4 PrefsWahl.5,
  322.                                  FontsWahl.count FontsWahl.1 FontsWahl.2 FontsWahl.3 FontsWahl.4 FontsWahl.5,
  323.                                  ENVWahl.count ENVWahl.1 ENVWahl.2 ENVWahl.3 ENVWahl.4 ENVWahl.5,
  324.                                  LocaleWahl.count LocaleWahl.1 LocaleWahl.2 LocaleWahl.3 LocaleWahl.4 LocaleWahl.5,
  325.                                  DocsWahl.count DocsWahl.1 DocsWahl.2 DocsWahl.3 DocsWahl.4 DocsWahl.5,
  326.                                  WBStartWahl.count WBStartWahl.1 WBStartWahl.2 WBStartWahl.3 WBStartWahl.4 WBStartWahl.5
  327.   rc = open('Console','CON:50/50/540/100/Konsole','W')
  328.   writeln('Console','Zu archivierende Dateien werden ermittelt')
  329.   if exists("t:uninstall") then
  330.     address command "delete >nil: t:uninstall"
  331.   rc = open('Work','CON:50/150/540/100/Arbeits-Fenster'.'W')
  332.   writeln('Work','Bearbeite Orginal')
  333.   address command 'list >>t:UnInstall "' || Orginal || '#?" files all lformat="%s%s"'
  334.   writeln('Work','Bearbeite S:')
  335.   do i = 1 to SWahl.count
  336.     address command 'list >>t:UnInstall "' || SWahl.i || '#?" files all lformat="%s%s"'
  337.   end
  338.   writeln('Work','Bearbeite LIBS:')
  339.   do i = 1 to LIBSWahl.count
  340.     address command 'list >>t:UnInstall "' || LIBSWahl.i || '#?" files all lformat="%s%s"'
  341.   end
  342.   writeln('Work','Bearbeite Prefs:')
  343.   do i = 1 to PrefsWahl.count
  344.     address command 'list >>t:UnInstall "' || PrefsWahl.i || '#?" files all lformat="%s%s"'
  345.   end
  346.   writeln('Work','Bearbeite Fonts:')
  347.   do i = 1 to FontsWahl.count
  348.     address command 'list >>t:UnInstall "' || FontsWahl.i || '#?" files all lformat="%s%s"'
  349.   end
  350.   writeln('Work','Bearbeite ENV:')
  351.   do i = 1 to ENVWahl.count
  352.     address command 'list >>t:UnInstall "' || ENVWahl.i || '#?" files all lformat="%s%s"'
  353.   end
  354.   writeln('Work','Bearbeite Locale:')
  355.   do i = 1 to LocaleWahl.count
  356.     address command 'list >>t:UnInstall "' || LocaleWahl.i || '#?" files all lformat="%s%s"'
  357.   end
  358.   writeln('Work','Bearbeite Docs:')
  359.   do i = 1 to DocsWahl.count
  360.     address command 'list >>t:UnInstall "' || DocsWahl.i || '#?" files all lformat="%s%s"'
  361.   end
  362.   writeln('Work','Bearbeite WBStartUp:')
  363.   do i = 1 to WBStartWahl.count
  364.     address command 'list >>t:UnInstall "' || WBStartWahl.i || '#?" files all lformat="%s%s"'
  365.   end
  366.   rc = close('Work')
  367.   rc = close('Console')
  368. RETURN
  369.  
  370. /************************************************************************************/
  371. /* Größe des Backups ermitteln                                                      */
  372. /************************************************************************************/
  373. GroesseErm : PROCEDURE EXPOSE GesBlocks
  374.   rc = open('Console','CON:50/50/540/100/Konsole','W')
  375.   rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W')
  376.   writeln('Console','Größe des Backups wird ermittelt')
  377.   rc = open('inp','t:UnInstall','R')
  378.   rc = open('out','t:UnInstall1','W')
  379.   do until(eof('inp'))
  380.     eintrag = readln('inp')
  381.     writeln('Work','Bearbeite Datei '|| eintrag)
  382.     if eintrag ~= " " then do
  383.       status = statef(eintrag)
  384.       parse var status a b block c
  385.       eintrag=block+1 || "#" || eintrag
  386.       rc = writeln('out',eintrag)
  387.       GesBlocks = GesBlocks + block + 1
  388.     end
  389.   end
  390.   rc = close('inp')
  391.   rc = close('out')
  392.   rc = close('Work')
  393.   rc = close('Console')
  394. RETURN
  395.  
  396. /************************************************************************************/
  397. /* Einträge kopieren                                                                */
  398. /************************************************************************************/
  399. Kopieren : PROCEDURE EXPOSE NL GesBlocks disks installerpfad OrgTyp OrgPfad Orginal
  400.   rc = open('Console','CON:50/50/540/100/Konsole','W')
  401.   writeln('Console','Einträge werden eingelesen')
  402.   anzahl = 0
  403.   rc = open('inp','t:UnInstall1','R')
  404.   rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W')
  405.   do until(eof('inp'))
  406.     eintrag = readln('inp')
  407.     if eintrag ~= ' ' then do
  408.       anzahl = anzahl + 1
  409.       parse var eintrag tab.anzahl.block '#' tab.anzahl.datei
  410.       writeln('Work','Bearbeite ' || tab.anzahl.datei)
  411.     end
  412.   end
  413.   rc = close('inp')
  414.   rc = close('Work')
  415.   rc = close('Console')
  416.   rc = open('Console','CON:50/50/540/100/Konsole','W')
  417.   writeln('Console','Einträge werden sortiert')
  418.   rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W')
  419.   do i = 1 to anzahl-1
  420.     writeln('Work','Bearbeite Eintrag ' || i || ' von ' || anzahl)
  421.     do j = i to anzahl
  422.       if tab.i.block < tab.j.block then do
  423.         xblock = tab.i.block
  424.         xdatei = tab.i.datei
  425.         tab.i.block = tab.j.block
  426.         tab.i.datei = tab.j.datei
  427.         tab.j.block = xblock
  428.         tab.j.datei = xdatei
  429.       end
  430.     end
  431.   end
  432.   rc = close('Work')
  433.   rc = close('Console')
  434.   if tab.1.block > 1730 then
  435.     rtezrequest('Achtung:' || NL ||,
  436.                 '--------' || NL ||,
  437.                 'Sie müssen HD-Disketten verwenden,' || NL ||,
  438.                 'da Dateien zu sichern sind, die nicht' || NL ||,
  439.                 'auf DD-Disketten passen')
  440.   disks = 1
  441.   rc = open('Console','CON:50/50/540/100/Konsole','W')
  442.   writeln('Console','Einträge werden kopiert')
  443.   writeln('Console','Gesamtgröße des Backups ' || gesblocks*512 || ' Byte')
  444.   rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W')
  445.   do until(GesBlocks <= 0)
  446.     rc = rtezrequest("Bitte Diskette " || disks || " einlegen" || NL ||,
  447.                      "Daten werden überschrieben")
  448.     writeln('Work','Diskette' disks 'wird formatiert')
  449.     address command "format <nil: >nil: DEVICE=df0: NAME Install_" || disks || " ffs intl dircache noicons"
  450.     if disks = 1 then do
  451.       writeln('Work','Belege Platz für Install-Script')
  452.       address command "copy " || installerpfad || "installer to Install_1:install1"
  453.       writeln('Work','Kopiere Commodore-Installer')
  454.       address command "copy " || installerpfad || "installer Install_1:"
  455.     end
  456.     address command 'info >t:diskspace df0:'
  457.     rc = open(ds,"t:diskspace","R")
  458.     satz = readln(ds)
  459.     satz = readln(ds)
  460.     satz = readln(ds)
  461.     satz = readln(ds)
  462.     parse var satz e1 e2 e3 diskspace e4
  463.     rc = close(ds)
  464.     diskvoll = "n"
  465.     do until(diskvoll="j" | Gesblocks <=0)
  466.       i = 1
  467.       do while ~(i > anzahl | tab.i.block < diskspace)
  468.         if tab.i.block > 3500 & tab.i.block ~= 9999999 then do
  469.           rtezrequest('Die Datei ' || tab.i.datei || NL ||,
  470.                       '(' || tab.i.block*512 || ') konnte nicht' || NL ||,
  471.                       'kopiert werden')
  472.           Gesblocks = Gesblocks - tab.i.block
  473.           tab.i.block = 9999999
  474.         end
  475.         i = i + 1
  476.         if i > anzahl then tab.i.block = 0
  477.       end
  478.       if i <= anzahl then do
  479.         writeln('Work','Kopiere' tab.i.datei '(' || tab.i.block*512 || '/' || gesblocks*512 || '/' || diskspace*512 || ')')
  480.         gesblocks = gesblocks - tab.i.block
  481.         tab.i.block = 9999999
  482.         if substr(tab.i.datei,1,length(Orginal)) = Orginal then
  483.           if OrgTyp = "DIR" & Orginal || ".info" ~= tab.i.datei then do
  484.             x = substr(tab.i.datei,length(orginal)+1)
  485.             ziel = OrgPfad || x
  486.             pos = lastpos('/',ziel)
  487.             ziel = substr(ziel,1,pos-1)
  488.           end  
  489.           else
  490.             ziel = ""
  491.         else do
  492.           pos = index(tab.i.datei,":")
  493.           ziel = substr(tab.i.datei,pos+1)
  494.           pos = lastpos("/",ziel)
  495.           ziel = substr(ziel,1,pos-1)
  496.         end  
  497.         if ~exists("df0:"||ziel) then do
  498.           rest = ziel
  499.           xrest = "DF0:"
  500.           do while(rest ~= "")
  501.             pos = index(rest,"/",2)
  502.             if pos = 0 then pos = length(rest) + 1
  503.             xrest = xrest || substr(rest,1,pos-1)
  504.             rest = substr(rest,pos)
  505.             if ~exists(xrest) then
  506.               address command "makedir """||xrest||""""
  507.           end
  508.         end            
  509.         address command "copy """ || tab.i.datei || """ ""df0:" || ziel || """ all"
  510.         address command 'info >t:diskspace df0:'
  511.         rc = open(ds,"t:diskspace","R")
  512.         satz = readln(ds)
  513.         satz = readln(ds)
  514.         satz = readln(ds)
  515.         satz = readln(ds)
  516.         parse var satz e1 e2 e3 diskspace e4
  517.         diskspace=diskspace - 1
  518.         rc = close(ds)
  519.       end
  520.       else diskvoll = "j"
  521.     end  
  522.     disks = disks + 1
  523.   end
  524.   rc=close('Console')
  525.   rc=close('Work')
  526.   disks = disks - 1
  527. RETURN
  528.  
  529. /************************************************************************************/
  530. /* Install-Script erzeugen                                                          */
  531. /************************************************************************************/
  532. ErzInstallScript : PROCEDURE EXPOSE disks GesBytes NL OrgPfad OrgWo Name Orginal Editor
  533.   rc = rtezrequest("Bitte Diskette Install_1 einlegen" || NL ||,
  534.                    "Installations-Script wird vorbereitet")
  535.   address command 'delete >nil: Install_1:install1'
  536.   address command "copy sys:utilities/Install.info Install_1:"
  537.   rc = rtezrequest("Editor wird gestartet" || NL ||,
  538.                    "Benötigte Daten aus USER-Startup abspeichern")
  539.   address command "copy s:USER-Startup t:"
  540.   address command editor "t:USER-Startup"
  541.   rc = rtezrequest("Editieren abgeschlossen?")
  542.   rc = open(inst,"T:Install","W")
  543.   writeln(inst,"(complete 0)")
  544.   writeln(inst,"(set #ProgName (cat """ || OrgPfad || """))")
  545.   writeln(inst,'(set user_script (cat ""))')
  546.   writeln(inst,"(set SpaceNeeded " || GesBytes || ")")
  547.   writeln(inst,'(set #HardDiskDefaultDest (cat "' || OrgWo ||'"))')
  548.   do i = 1 to disks
  549.     writeln(inst,'(set #BackDisk' || i || ' (cat "Install_' || i ||'"))')
  550.   end
  551.   writeln(inst,'(set #LongProgName (cat #ProgName "-BackUp"))')
  552.   writeln(inst,'(set #Welcome-Pirate (cat "\nWillkommen zur " #LongProgName " Installation\n\n"')
  553.   writeln(inst,'"Diese Version wurde aus einer bestehenden "')
  554.   writeln(inst,'"Installation erzeugt.\n\n"')
  555.   writeln(inst,'"Nicht für separaten Verkauf.\n"')
  556.   writeln(inst,'"Privateigentum von ' || Name || '"))')
  557.   writeln(inst,'(set #InsertDiskMsg (cat "\nBenötige die Diskette mit dem Namen\n\n"))')
  558.   writeln(inst,'(set #diskhelp (cat "\n    Wenn sich die richtige Diskette im Laufwerk befindet, Sie dennoch nicht weiterkommen, "')
  559.   writeln(inst,'"ist der Name der Diskette falsch.\n"')
  560.   writeln(inst,'"    Stellen Sie sicher, daß der Diskettenname nicht mit 'copy_of_', oder Leerzeichen beginnt oder aufhört.\n\n\n"))')
  561.   writeln(inst,'(set #InstallIconName (cat #BackDisk1 ":Install"))')
  562.   writeln(inst,'(set #BadKick (cat #LongProgName " benötigt Workbench 3 oder höher."))')
  563.   writeln(inst,'(set #DestChoicePrompt (cat "\n\n\nWo soll das Programm " #ProgName "installiert werden ?"))')
  564.   writeln(inst,'(set #HardDiskFontDest (cat "SYS:Fonts"))')
  565.   writeln(inst,'(set #HardDiskLibDest (cat "SYS:Libs"))')
  566.   writeln(inst,'(set #HardDiskPrefsDest (cat "SYS:Prefs"))')
  567.   writeln(inst,'(set #HardDiskSDest (cat "SYS:S"))')
  568.   writeln(inst,'(set #HardDiskDocDest (cat "' || docpfad || '"))')
  569.   writeln(inst,'(set #HardDiskLocDest (cat "SYS:Locale"))')
  570.   writeln(inst,'(set #HardDiskDestChoiceMsg (cat "Wo soll das Programm\n" #ProgName " installiert werden ?"))')
  571.   writeln(inst,'(set #HardDiskDestChoiceHelp (cat "    Wählen Sie das Verzeichnis in das " #ProgName "installiert "')
  572.   writeln(inst,'"werden soll, und klichen dann Proceed (ein neues Verzeichnis mit dem "')
  573.   writeln(inst,'"Namen \"" #ProgName "\" wird angelegt und enthält " #ProgName ".)"))')
  574.   writeln(inst,'(set #HardDiskDestChoiceConfirmMsg1 (cat "\nSind Sie sicher, daß " #ProgName " in \n\n\""))')
  575.   writeln(inst,'(set #HardDiskDestChoiceConfirmMsg2 (cat "\"\n\n\n\n(Ein neues Verzeichnis mit dem Namen \"" #ProgName "\" wird angelegt und enthält " #ProgName ".)"))')
  576.   writeln(inst,'(set #HardDiskDestChoiceConfirmHelp (cat "    Klicken Sie YES um das Zielverzeichnis zu bestätigen.\n\n"')
  577.   writeln(inst,'"    Klicken Sie NO um das Zielverzeichnis zu ändern."))')
  578.   writeln(inst,'(set #DrawerExistsMsg (cat "\nDas Verzeichnis \"" #ProgName "\" existiert bereits auf Ihrem "')
  579.   writeln(inst,'"Ziellaufwerk.\n\nMöchten Sie das bestehende ersetzen oder ein "')
  580.   writeln(inst,'"neues Ziel wählen?"))')
  581.   writeln(inst,'(set #DrawerExistsChoice1 (cat "Ersetzen"))')
  582.   writeln(inst,'(set #DrawerExistsChoice2 (cat "Neues Ziel wählen"))')
  583.   writeln(inst,'(set #DrawerExistsHelp (cat "\n    Sie haben ein Zielverzeichnis gewählt in dem sich bereits "')
  584.   writeln(inst,'"eine Version von \"" #ProgName "\" befindet.\n\n    Klicken Sie \"" ')
  585.   writeln(inst,'#DrawerExistsChoice1 "\" um diese durch die vorliegende neue Version "')
  586.   writeln(inst,'"von " #ProgName " zu ersetzen.\n    Klicken Sie \"" #DrawerExistsChoice2 "\" "')
  587.   writeln(inst,'"um ein neues Zielverzeichnis zu wählen."))')
  588.   writeln(inst,'(set #NoDiskSpaceMsg (cat "Auf Ihrer Festplatte befindet sich nicht genügend freie "')
  589.   writeln(inst,'"Speicherkapazität um " #ProgName " zu installieren. Sie benötigen "')
  590.   writeln(inst,'"mindestens " SpaceNeeded " Bytes freien Speicher.\n\nBrechen Sie "')
  591.   writeln(inst,'"diese Installation ab und löschen Sie einige Dateien auf Ihrer "')
  592.   writeln(inst,'"Festplatte oder wählen Sie eine andere Partition."))')
  593.   writeln(inst,'(set #HardDiskWorkingMsg (cat "Bitte warten... Programm wird installiert."))')
  594.   writeln(inst,'(askdisk')
  595.   writeln(inst,'    (prompt #InsertDiskMsg #BackDisk1)')
  596.   writeln(inst,'    (help #diskhelp)')
  597.   writeln(inst,'    (dest #BackDisk1)')
  598.   writeln(inst,')')
  599.   writeln(inst,'(if (< (/ (getversion) 65536) 39)')
  600.   writeln(inst,'      ( abort #badkick )')
  601.   writeln(inst,')')
  602.   writeln(inst,'(message #Welcome-Pirate)')
  603.   writeln(inst,'(complete 10)')
  604.   writeln(inst,'(set MyDefault #HardDiskDefaultDest)')
  605.   writeln(inst,'(set FontDest #HardDiskFontDest)')
  606.   writeln(inst,'(set DriverDest #HardDiskDriverDest)')
  607.   writeln(inst,'(set LibDest #HardDiskLibDest)')
  608.   writeln(inst,'(set OK 0)')
  609.   writeln(inst,'(until (= OK 1)')
  610.   writeln(inst,'    (set DestPath')
  611.   writeln(inst,'        (askdir')
  612.   writeln(inst,'            (prompt #HardDiskDestChoiceMsg)')
  613.   writeln(inst,'            (help #HardDiskDestChoiceHelp)')
  614.   writeln(inst,'            (default MyDefault)')
  615.   writeln(inst,'        )')
  616.   writeln(inst,'    )')
  617.   writeln(inst,'    (if')
  618.   writeln(inst,'        (askbool')
  619.   writeln(inst,'            (prompt #HardDiskDestChoiceConfirmMsg1 DestPath #HardDiskDestChoiceConfirmMsg2)')
  620.   writeln(inst,'            (help #HardDiskDestChoiceConfirmHelp)')
  621.   writeln(inst,'        )')
  622.   writeln(inst,'        (set OK 1)')
  623.   writeln(inst,'    )')
  624.   writeln(inst,'    (if (= OK 1)')
  625.   writeln(inst,'        (if (exists (tackon DestPath #ProgName))')
  626.   writeln(inst,'            (')
  627.   writeln(inst,'                (if')
  628.   writeln(inst,'                    (askbool')
  629.   writeln(inst,'                        (prompt #DrawerExistsMsg)')
  630.   writeln(inst,'                        (choices #DrawerExistsChoice1 #DrawerExistsChoice2)')
  631.   writeln(inst,'                        (help #DrawerExistsHelp)')
  632.   writeln(inst,'                        (default 0)')
  633.   writeln(inst,'                    )')
  634.   writeln(inst,'                    (')
  635.   writeln(inst,'                        (set OK 1)')
  636.   writeln(inst,'                    )')
  637.   writeln(inst,'                    (')
  638.   writeln(inst,'                        (set OK 0)')
  639.   writeln(inst,'                    )')
  640.   writeln(inst,'                )')
  641.   writeln(inst,'            )')
  642.   writeln(inst,'        )')
  643.   writeln(inst,'    )')
  644.   writeln(inst,'    (if (= OK 1)')
  645.   writeln(inst,'        (')
  646.   writeln(inst,'            (if (< (getdiskspace DestPath) SpaceNeeded)')
  647.   writeln(inst,'                (')
  648.   writeln(inst,'                    (message #NoDiskSpaceMsg)')
  649.   writeln(inst,'                    (set OK 0)')
  650.   writeln(inst,'                )')
  651.   writeln(inst,'            )')
  652.   writeln(inst,'        )')
  653.   writeln(inst,'    )')
  654.   writeln(inst,')')
  655.   writeln(inst,'(set DrawerDest (tackon DestPath #ProgName))')
  656.   writeln(inst,'(makedir DrawerDest)')
  657.   writeln(inst,'(askdisk')
  658.   writeln(inst,'    (prompt #InsertDiskMsg #BackDisk1)')
  659.   writeln(inst,'    (help #diskhelp)')
  660.   writeln(inst,'    (dest #BackDisk1)')
  661.   writeln(inst,')')
  662.   writeln(inst,'(working')
  663.   writeln(inst,'    (prompt #HardDiskWorkingMsg)')
  664.   writeln(inst,')')
  665.   writeln(inst,'(copyfiles')
  666.   writeln(inst,'    (source (cat #BackDisk1 ":" #ProgName))')
  667.   writeln(inst,'    (dest DrawerDest)')
  668.   writeln(inst,'    (infos)')
  669.   writeln(inst,'    (all)')
  670.   writeln(inst,')')
  671.   writeln(inst,'(if (exists (cat #BackDisk1 ":Fonts"))')
  672.   writeln(inst,'    (copyfiles')
  673.   writeln(inst,'        (source (cat #BackDisk1 ":Fonts"))')
  674.   writeln(inst,'        (dest #HardDiskFontDest)')
  675.   writeln(inst,'        (infos)')
  676.   writeln(inst,'        (all)')
  677.   writeln(inst,'    )')
  678.   writeln(inst,')')
  679.   writeln(inst,'(if (exists (cat #BackDisk1 ":Libs"))')
  680.   writeln(inst,'    (copyfiles')
  681.   writeln(inst,'        (source (cat #BackDisk1 ":Libs"))')
  682.   writeln(inst,'        (dest #HardDiskLibDest)')
  683.   writeln(inst,'        (infos)')
  684.   writeln(inst,'        (all)')
  685.   writeln(inst,'    )')
  686.   writeln(inst,')')
  687.   writeln(inst,'(if (exists (cat #BackDisk1 ":Prefs"))')
  688.   writeln(inst,'    (copyfiles')
  689.   writeln(inst,'        (source (cat #BackDisk1 ":Prefs"))')
  690.   writeln(inst,'        (dest #HardDiskPrefsDest)')
  691.   writeln(inst,'        (infos)')
  692.   writeln(inst,'        (all)')
  693.   writeln(inst,'    )')
  694.   writeln(inst,')')
  695.   writeln(inst,'(if (exists (cat #BackDisk1 ":S"))')
  696.   writeln(inst,'    (copyfiles')
  697.   writeln(inst,'        (source (cat #BackDisk1 ":S"))')
  698.   writeln(inst,'        (dest #HardDiskSDest)')
  699.   writeln(inst,'        (infos)')
  700.   writeln(inst,'        (all)')
  701.   writeln(inst,'    )')
  702.   writeln(inst,')')
  703.   writeln(inst,'(if (exists (cat #BackDisk1 ":Docs"))')
  704.   writeln(inst,'    (copyfiles')
  705.   writeln(inst,'        (source (cat #BackDisk1 ":Docs"))')
  706.   writeln(inst,'        (dest #HardDiskDocDest)')
  707.   writeln(inst,'        (infos)')
  708.   writeln(inst,'        (all)')
  709.   writeln(inst,'    )')
  710.   writeln(inst,')')
  711.   writeln(inst,'(if (exists (cat #BackDisk1 ":Locale"))')
  712.   writeln(inst,'    (copyfiles')
  713.   writeln(inst,'        (source (cat #BackDisk1 ":Locale"))')
  714.   writeln(inst,'        (dest #HardDiskLocDest)')
  715.   writeln(inst,'        (infos)')
  716.   writeln(inst,'        (all)')
  717.   writeln(inst,'    )')
  718.   writeln(inst,')')
  719.   if disks > 1 then do
  720.     do i = 2 to disks
  721.       writeln(inst,'(if (<> #BackDisk'||i||' "")')
  722.       writeln(inst,'    (')
  723.       writeln(inst,'        (askdisk')
  724.       writeln(inst,'            (prompt #InsertDiskMsg #BackDisk'||i||')')
  725.       writeln(inst,'            (help #diskhelp)')
  726.       writeln(inst,'            (dest #BackDisk'||i||')')
  727.       writeln(inst,'        )')
  728.       writeln(inst,'        (copyfiles')
  729.       writeln(inst,'            (source (cat #BackDisk'||i||' ":" #ProgName))')
  730.       writeln(inst,'            (dest DrawerDest)')
  731.       writeln(inst,'            (infos)')
  732.       writeln(inst,'            (all)')
  733.       writeln(inst,'        )')
  734.       writeln(inst,'        (if (exists (cat #BackDisk'||i||' ":Fonts"))')
  735.       writeln(inst,'            (copyfiles')
  736.       writeln(inst,'                (source (cat #BackDisk'||i||' ":Fonts"))')
  737.       writeln(inst,'                (dest #HardDiskFontDest)')
  738.       writeln(inst,'                (infos)')
  739.       writeln(inst,'                (all)')
  740.       writeln(inst,'            )')
  741.       writeln(inst,'        )')
  742.       writeln(inst,'        (if (exists (cat #BackDisk'||i||' ":Libs"))')
  743.       writeln(inst,'            (copyfiles')
  744.       writeln(inst,'                (source (cat #BackDisk'||i||' ":Libs"))')
  745.       writeln(inst,'                (dest #HardDiskLibDest)')
  746.       writeln(inst,'                (infos)')
  747.       writeln(inst,'                (all)')
  748.       writeln(inst,'            )')
  749.       writeln(inst,'        )')
  750.       writeln(inst,'        (if (exists (cat #BackDisk'||i||' ":Prefs"))')
  751.       writeln(inst,'            (copyfiles')
  752.       writeln(inst,'                (source (cat #BackDisk'||i||' ":Prefs"))')
  753.       writeln(inst,'                (dest #HardDiskPrefsDest)')
  754.       writeln(inst,'                (infos)')
  755.       writeln(inst,'                (all)')
  756.       writeln(inst,'            )')
  757.       writeln(inst,'        )')
  758.       writeln(inst,'        (if (exists (cat #BackDisk'||i||' ":S"))')
  759.       writeln(inst,'            (copyfiles')
  760.       writeln(inst,'                (source (cat #BackDisk'||i||' ":S"))')
  761.       writeln(inst,'                (dest #HardDiskSDest)')
  762.       writeln(inst,'                (infos)')
  763.       writeln(inst,'                (all)')
  764.       writeln(inst,'            )')
  765.       writeln(inst,'        )')
  766.       writeln(inst,'        (if (exists (cat #BackDisk'||i||' ":Docs"))')
  767.       writeln(inst,'            (copyfiles')
  768.       writeln(inst,'                (source (cat #BackDisk'||i||' ":Docs"))')
  769.       writeln(inst,'                (dest #HardDiskDocDest)')
  770.       writeln(inst,'                (infos)')
  771.       writeln(inst,'                (all)')
  772.       writeln(inst,'            )')
  773.       writeln(inst,'        )')
  774.       writeln(inst,'        (if (exists (cat #BackDisk'||i||' ":Locale"))')
  775.       writeln(inst,'            (copyfiles')
  776.       writeln(inst,'                (source (cat #BackDisk'||i||' ":Locale"))')
  777.       writeln(inst,'                (dest #HardDiskLocDest)')
  778.       writeln(inst,'                (infos)')
  779.       writeln(inst,'                (all)')
  780.       writeln(inst,'            )')
  781.       writeln(inst,'        )')
  782.       writeln(inst,'    )')
  783.       writeln(inst,')')
  784.     end
  785.   end
  786.   rc = open(user,"T:USER-Startup","R")
  787.   i = 0
  788.   do until(eof(user))
  789.     i = i + 1
  790.     userr.i = readln(user)
  791.   end
  792.   rc = close(user)
  793.   anzahl = i-1
  794.   if anzahl > 0 then do
  795.     writeln(inst,'(set user_script (cat ')
  796.     do i = 1 to anzahl
  797.       zeile = ""
  798.       do j = 1 to length(userr.i)
  799.         if substr(userr.i,j,1) = '"' then zeile = zeile || '\"'
  800.         else zeile = zeile || substr(userr.i,j,1)
  801.       end
  802.       zeile = zeile || '\n'
  803.       zeile = '"' || zeile || '"'
  804.       uzeile = zeile
  805.       uorgwahl = Orginal
  806.       upper uzeile uorgwahl
  807.       pos = index(uzeile,uorgwahl)
  808.       if pos > 0 then do
  809.         zeile = substr(zeile,1,pos-1) || '" DrawerDest "' || substr(zeile,pos+length(uorgwahl))
  810.       end
  811.       s=writeln(inst,zeile)
  812.     end
  813.     writeln(inst,'))')
  814.   end         
  815.   writeln(inst,'(if (<> user_script "")')
  816.   writeln(inst,'    (')
  817.   writeln(inst,'        (working omp "Updating S:User-Startup.")')
  818.   writeln(inst,'        (startup #ProgName')
  819.   writeln(inst,'            (prompt')
  820.   writeln(inst,'                "Diese Instruktionen müssen an die Datei \"S:User-Startup\" hinzugefügt"')
  821.   writeln(inst,'                "werden."')
  822.   writeln(inst,'                "Somit ist Ihr System für den Einsatz von " #Progname " konfiguriert.\n\n"')
  823.   writeln(inst,'                user_script')
  824.   writeln(inst,'            )')
  825.   writeln(inst,'            (help @startup-help)')
  826.   writeln(inst,'            (command user_script)')
  827.   writeln(inst,'        )')
  828.   writeln(inst,'    )')
  829.   writeln(inst,')')
  830.   writeln(inst,'(complete 100)')
  831.   writeln(inst,'(exit)')
  832.   rc = close(inst)
  833.   address command "copy t:Install Install_1:"
  834.   rc = rtezrequest(Orginal || " wurde archiviert")
  835. RETURN
  836.  
  837.